﻿//--------------------------------------------------------------------------
// 
//  Copyright (c) Chili Software.  All rights reserved. 
// 
//  File: TokeKinds.cs
//
//  Description: Specifies the token kinds for the Token class.
// 
//--------------------------------------------------------------------------

using System;
using System.Collections.Generic;
using System.Text;

namespace Chili.Opf3.Query.OPathParser
{
	/// <summary>Contains different types of an <see cref="Token">Token</see>.</summary>
	/// <remarks>
	/// This enumeration contains the types of an <see cref="IQuery">IQuery</see>. The
	/// type of the query should be discovered by the <see cref="IQuery">IQuery</see>
	/// itself.
	/// </remarks>
	[Serializable]
	internal enum TokenKinds
	{
		/// <summary>
		/// Represents a token that is an open bracket in the OPath statement.
		/// </summary>
		OpenParenthesis,
		/// <summary>
		/// Represents a token that is a closing bracket in the OPath statement.
		/// </summary>
		CloseParenthesis,
		/// <summary>
		/// Represents a token that is a object member in the OPath statement.
		/// </summary>
		Member,
		/// <summary>
		/// Represents a token that is a comparer in the OPath statement.
		/// </summary>
		Comparer,
		/// <summary>
		/// Represents a token that is a parameter in the OPath statement.
		/// </summary>
		Parameter,
		/// <summary>
		/// Represents a token that is a concat in the OPath statement.
		/// </summary>
		Concat,
		/// <summary>
		/// Represents a token that is a join in the OPath statement.
		/// </summary>
		Join,
		/// <summary>
		/// Represents a token that is a command in the OPath statement.
		/// </summary>
		Command,
		/// <summary>
		/// Represents a token that is a SortBy in the OPath statement.
		/// </summary>
		SortBy,
		/// <summary>
		/// Represents a token that is unknown. A token is unknown if it has been found in
		/// a place where it was not clear what kind of token it is. This does not mean that
		/// the token is invalid.
		/// </summary>
		Unknown
	}
}
